home *** CD-ROM | disk | FTP | other *** search
- package netscape.plugin.composer.io;
-
- import java.io.IOException;
- import java.io.Reader;
-
- class SlidingBuffer extends Reader {
- static final int DEFAULT_BUFFER_LENGTH = 4096;
- // $FF: renamed from: in java.io.Reader
- protected Reader field_0;
- protected char[] buffer;
- protected int offset;
- protected int end;
-
- public SlidingBuffer(Reader var1) {
- this.field_0 = var1;
- this.buffer = new char[4096];
- }
-
- public SlidingBuffer(Reader var1, int var2) {
- this.field_0 = var1;
- if (var2 < 4096) {
- var2 = 4096;
- }
-
- this.buffer = new char[var2];
- }
-
- public int read() throws IOException {
- int var1 = this.end - this.offset;
- if (var1 == 0 && !this.fill()) {
- return -1;
- } else {
- char var2 = this.buffer[this.offset++];
- return var2;
- }
- }
-
- public int read(char[] var1) throws IOException {
- int var2 = this.end - this.offset;
- if (var2 == 0 && !this.fill()) {
- return -1;
- } else {
- var2 = this.end - this.offset;
- if (var2 > var1.length) {
- var2 = var1.length;
- }
-
- System.arraycopy(this.buffer, this.offset, var1, 0, var2);
- this.offset += var2;
- return var2;
- }
- }
-
- public int read(char[] var1, int var2, int var3) throws IOException {
- int var4 = this.end - this.offset;
- if (var4 == 0 && !this.fill()) {
- return -1;
- } else {
- var4 = this.end - this.offset;
- if (var4 > var3) {
- var4 = var3;
- }
-
- System.arraycopy(this.buffer, this.offset, var1, var2, var4);
- this.offset += var4;
- return var4;
- }
- }
-
- public long skip(long var1) throws IOException {
- int var3 = this.end - this.offset;
- if ((long)var3 >= var1) {
- this.offset = (int)((long)this.offset + var1);
- return var1;
- } else {
- this.offset = 0;
- this.end = 0;
- return (long)var3 + this.field_0.skip(var1 - (long)var3);
- }
- }
-
- public int peek() throws IOException {
- int var1 = this.end - this.offset;
- if (var1 == 0 && !this.fill()) {
- return -1;
- } else {
- char var2 = this.buffer[this.offset];
- return var2;
- }
- }
-
- public void unread(int var1) throws IOException {
- if (this.offset < var1) {
- throw new IOException("invalid unread; offset=" + this.offset + " count=" + var1);
- } else {
- this.offset -= var1;
- }
- }
-
- public boolean lookAhead(char var1) throws IOException {
- int var2 = this.end - this.offset;
- if (var2 == 0 && !this.fill()) {
- return false;
- } else if (this.buffer[this.offset] == var1) {
- ++this.offset;
- return true;
- } else {
- return false;
- }
- }
-
- public boolean lookAhead(String var1) throws IOException {
- return this.lookAhead(var1, false);
- }
-
- public boolean lookAhead(String var1, boolean var2) throws IOException {
- int var3 = var1.length();
- int var4 = this.end - this.offset;
- if (var4 < var3 && !this.fillForCapacity(var3)) {
- return false;
- } else {
- for(int var5 = 0; var5 < var3; ++var5) {
- char var6 = this.buffer[this.offset + var5];
- char var7 = var1.charAt(var5);
- if (var2) {
- var6 = Character.toLowerCase(var6);
- var7 = Character.toLowerCase(var7);
- }
-
- if (var6 != var7) {
- return false;
- }
- }
-
- this.offset += var3;
- return true;
- }
- }
-
- public boolean eatWhiteSpace() throws IOException {
- boolean var1 = false;
-
- do {
- for(int var2 = this.offset; var2 < this.end; ++var2) {
- char var3 = this.buffer[var2];
- if (var3 != ' ' && var3 != '\t' && var3 != '\r' && var3 != '\n' && var3 != '\f') {
- this.offset = var2;
- return var1;
- }
-
- var1 = true;
- }
- } while(this.fill());
-
- return var1;
- }
-
- public boolean eatNewline() throws IOException {
- boolean var1 = false;
- int var2 = this.end - this.offset;
- if (var2 < 2 && !this.fillForCapacity(2)) {
- if (this.end - this.offset == 0) {
- return false;
- } else if (this.buffer[this.offset] != '\r' && this.buffer[this.offset] != '\n') {
- return false;
- } else {
- ++this.offset;
- return true;
- }
- } else {
- if (this.buffer[this.offset] == '\r') {
- ++this.offset;
- var1 = true;
- }
-
- if (this.buffer[this.offset] == '\n') {
- var1 = true;
- ++this.offset;
- }
-
- return var1;
- }
- }
-
- protected boolean fill() throws IOException {
- if (this.end - this.offset != 0) {
- throw new IOException("fill of non-empty buffer");
- } else {
- this.offset = 0;
- this.end = this.field_0.read(this.buffer, 0, this.buffer.length);
- if (this.end < 0) {
- this.end = 0;
- return false;
- } else {
- return true;
- }
- }
- }
-
- protected boolean fillForCapacity(int var1) throws IOException {
- int var2 = this.end - this.offset;
- if (var2 >= var1) {
- return true;
- } else {
- if (var1 >= this.buffer.length) {
- int var3 = this.buffer.length * 2;
- if (var3 < var1) {
- var3 = var1;
- }
-
- char[] var4 = new char[var3];
- System.arraycopy(this.buffer, this.offset, var4, 0, var2);
- this.offset = 0;
- this.end = var2;
- this.buffer = var4;
- } else if (var2 != 0) {
- System.arraycopy(this.buffer, this.offset, this.buffer, 0, var2);
- this.offset = 0;
- this.end = var2;
- }
-
- int var5 = var1 - var2;
- int var6 = this.field_0.read(this.buffer, this.offset, this.buffer.length - this.offset);
- if (var6 < var5) {
- if (var6 > 0) {
- this.end += var6;
- }
-
- return false;
- } else {
- this.end += var6;
- return true;
- }
- }
- }
-
- public void close() throws IOException {
- this.field_0.close();
- }
- }
-